/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AppService;

import Beans.WSBeanRemote;
import Facades.CategoriaBeanRemote;
import Facades.EmpresasBeanRemote;
import Facades.EstadoBeanRemote;
import Facades.PagosBeanRemote;
import Facades.TipopagoBeanRemote;
import VO.Categoria;
import VO.Empresas;
import VO.Estado;
import VO.Pagos;
import VO.Tipopago;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author Julian
 */
public class AdminPublicidad {

    static public boolean datospagos(String idempresa, int idtipopago, int idestado, Date fecha, Date fechainicial, Date fechafinal) throws Exception {
        boolean result = false;
        long total=0;
        int dias=0;

        long f1=Date.UTC(fechainicial.getYear(), fechainicial.getMonth(), fechainicial.getDate(), fechainicial.getHours(), fechainicial.getMinutes(), fechainicial.getSeconds());
        long f2 = Date.UTC(fechafinal.getYear(), fechafinal.getMonth(), fechafinal.getDate(), fechafinal.getHours(), fechafinal.getMinutes(), fechafinal.getSeconds());
        Empresas empresa = new Empresas();
        Tipopago tipopago = new Tipopago();
        Estado estado = new Estado();
        Pagos pago = new Pagos();
        int id= getID();
        pago.setIdPago(id);
        Long diasfinal=(f2-f1)/(1000*60*60*24);
        System.out.println(diasfinal);
        dias=diasfinal.intValue();
        pago.setDias(dias);
        pago.setFecha(fecha);

        pago.setFechaInicial(fechainicial);
        pago.setFechaFinal(fechafinal);
        fechainicial.compareTo(fecha);


        try {

            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;
            EmpresasBeanRemote ebean = (EmpresasBeanRemote) ctx1.lookup("Facades.EmpresasBeanRemote");
            TipopagoBeanRemote tbean = (TipopagoBeanRemote) ctx1.lookup("Facades.TipopagoBeanRemote");
            EstadoBeanRemote estbean = (EstadoBeanRemote) ctx1.lookup("Facades.EstadoBeanRemote");
            PagosBeanRemote pbean = (PagosBeanRemote) ctx1.lookup("Facades.PagosBeanRemote");
            WSBeanRemote wsbean = (WSBeanRemote) ctx1.lookup("Beans.WSBeanRemote");


            if (wsbean.verificar()) {
                /*int id = pbean.count();
                id = id + 1;
                pago.setIdPago(id);//*/

                System.out.println("entro if");

                empresa = ebean.findid(idempresa);
                tipopago = tbean.findid(idtipopago);
                total = dias * tipopago.getCosto();
                pago.setTotal(total);
                estado = estbean.findid(idestado);
                if (empresa != null && tipopago != null && estado != null) {
                    pago.setIdEmpresas(empresa);
                    pago.setIdTipoPago(tipopago);
                    pago.setIdEstado(estado);

                    System.out.println(pago.getIdPago());
                    pbean.create(pago);

                    result = true;
                }
            }

        } catch (Exception ex) {
            throw ex;
        }


        return result;

    }

    static public boolean editartipopago(int idtipopago, int costo, int filas) throws Exception {
        boolean result = false;
        Tipopago tipopago = new Tipopago();

        try {
            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;

            TipopagoBeanRemote tbean = (TipopagoBeanRemote) ctx1.lookup("Facades.TipopagoBeanRemote");

            tipopago = tbean.findid(idtipopago);
            tipopago.setCosto(costo);
            tipopago.setFilas(filas);


            tbean.edit(tipopago);

            result = true;
        } catch (Exception ex) {
            throw ex;
        }


        return result;

    }

    static public ArrayList<Empresas> PublicidadaPublicar() throws Exception {

        ArrayList<Empresas> listempresas = new ArrayList<Empresas>();
        try {
            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;

            EmpresasBeanRemote ebean = (EmpresasBeanRemote) ctx1.lookup("Facades.EmpresasBeanRemote");
            PagosBeanRemote pbean = (PagosBeanRemote) ctx1.lookup("Facades.PagosBeanRemote");
            Estado est = new Estado(2);
            List<Pagos> listp = pbean.findidEstado(est);

            System.out.println(listp);

            System.out.println("paso1");

            for (int i = 0; i < listp.size(); i++) {
                System.out.println(listp.get(i).getIdEmpresas());
                Empresas emp = listp.get(i).getIdEmpresas();
                System.out.println(ebean.findid(emp.getIdEmpresas()));

                System.out.println("en el for1");
                listempresas.add(ebean.findid(emp.getIdEmpresas()));
            }

            System.out.println("paso2");
            System.out.println(listempresas);


            return listempresas;//*/


        } catch (Exception ex) {
            throw ex;
        }

    }

    static public ArrayList<String> PublicidadaPublicar(int tipo) throws Exception {
        ArrayList<String> pub = new ArrayList<String>();
        ArrayList<Empresas> listempresas = new ArrayList<Empresas>();
        ArrayList<Empresas> listempresasfinal = new ArrayList<Empresas>();
        try {
            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;

            EmpresasBeanRemote ebean = (EmpresasBeanRemote) ctx1.lookup("Facades.EmpresasBeanRemote");
            PagosBeanRemote pbean = (PagosBeanRemote) ctx1.lookup("Facades.PagosBeanRemote");
            Estado est = new Estado(2);
            Tipopago tip = new Tipopago(tipo);
            List<Pagos> listp = pbean.findidEstadoyTipo(est, tip);

            for (int i = 0; i < listp.size(); i++) {
                System.out.println(listp.get(i).getIdEmpresas());
                Empresas emp = listp.get(i).getIdEmpresas();
                //System.out.println(ebean.findid(emp.getIdEmpresas()));
                //System.out.println("en el for1");
                listempresas.add(ebean.findid(emp.getIdEmpresas()));
            }
            int size = listempresas.size();
            int rand;
            System.out.println("listaempresas:"+listempresas);
            for(int a=0;a<size;a++){

                rand = (int) ( Math.random() * listempresas.size());
                listempresasfinal.add(listempresas.get(rand));
                listempresas.remove(rand);

            }
            //System.out.println("paso2");
            System.out.println("listaempresasfinal:"+listempresasfinal);

            if(tipo==1){
                for(int i=0;i<listempresasfinal.size();i++){
                    pub.add(listempresasfinal.get(i).getURLbanner());
                }
            }
            if(tipo==2){
                for(int i=0;i<listempresasfinal.size();i++){
                    pub.add(listempresasfinal.get(i).getURLweb());
                    pub.add(listempresasfinal.get(i).getURLbanner());
                    pub.add(listempresas.get(i).getIdEmpresas());
                }
            }


            return pub;//*/


        } catch (Exception ex) {
            throw ex;
        }

    }

    static public int getID() throws Exception{
        int id=0;
        InitialContext ctx1;
        try {
            ctx1 = new InitialContext();
            PagosBeanRemote pbean = (PagosBeanRemote) ctx1.lookup("Facades.PagosBeanRemote");
            id = pbean.count();
            id++;
        } catch (Exception ex) {
            throw ex;
        }


        return id;
    }

    static public ArrayList<String> PublicidadaPublicarCategoria(int tipo, int categoria) throws Exception {
        ArrayList<String> pub = new ArrayList<String>();
        ArrayList<Empresas> listempresas = new ArrayList<Empresas>();
        ArrayList<Empresas> listempresasfinal = new ArrayList<Empresas>();
        try {
            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;

            EmpresasBeanRemote ebean = (EmpresasBeanRemote) ctx1.lookup("Facades.EmpresasBeanRemote");
            PagosBeanRemote pbean = (PagosBeanRemote) ctx1.lookup("Facades.PagosBeanRemote");
            Estado est = new Estado(2);
            Tipopago tip = new Tipopago(tipo);
            List<Pagos> listp = pbean.findidEstadoyTipo(est, tip);


            System.out.println(listp);

            System.out.println("paso1");

            for (int i = 0; i < listp.size(); i++) {
                System.out.println(listp.get(i).getIdEmpresas());
                Empresas emp = listp.get(i).getIdEmpresas();
                System.out.println(ebean.findid(emp.getIdEmpresas()));
                System.out.println("en el for1");
                listempresas.add(ebean.findid(emp.getIdEmpresas()));
            }

            int size = listempresas.size();
            int rand;
            System.out.println("listaempresas:"+listempresas);
            for(int a=0;a<size;a++){

                rand = (int) ( Math.random() * listempresas.size());
                listempresasfinal.add(listempresas.get(rand));
                listempresas.remove(rand);

            }

            for(int i=0;i<listempresasfinal.size();i++){
                if(listempresasfinal.get(i).getIdCategoria().getIdCategoria()==categoria){
                    pub.add(listempresasfinal.get(i).getURLbanner());
                }
            }

            return pub;//*/


        } catch (Exception ex) {
            throw ex;
        }

    }

    static public List<Categoria> TraerCategorias() throws Exception{
        try {
            InitialContext ctx1 = new InitialContext();
            //InitialContext ctx1 = (InitialContext) a;

            CategoriaBeanRemote cbean = (CategoriaBeanRemote) ctx1.lookup("Facades.CategoriaBeanRemote");
            return cbean.findAll();
        } catch (Exception e) {
            throw e;
        }
    }

    static public List<Tipopago> TraerTipoPago() throws Exception{

            try {
            InitialContext ctx1 = new InitialContext();

            TipopagoBeanRemote tbean = (TipopagoBeanRemote) ctx1.lookup("Facades.TipopagoBeanRemote");
            return tbean.findAll();
        } catch (Exception e) {
            throw e;
        }
    }


}
